#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include<string>
#include<vector>
#include<stdio.h>
using namespace std;

//int n, val;
//int main()
//{
//	cin >> n;
//	int k = n;
//	if (k == 0)
//	{
//		cin >> val;
//		cout << val;
//	}
//	else
//	{
//		vector<string> _ret;
//		for (int i = 1; i <= n + 1; i++, k--)
//		{
//			cin >> val;
//			if (!val)
//				continue;
//			string s;
//			if (val == 1 || val == -1)
//			{
//				if (k == 0)
//				{
//					if (val > 0)
//					{
//						s += "+" + to_string(val);
//					}
//					else
//					{
//						s += to_string(val);
//					}
//					_ret.push_back(s);
//					continue;
//				}
//				else if (k == 1)
//				{
//					if (val > 0)
//					{
//						s = "+";
//						s += "x";
//						_ret.push_back(s);
//						continue;
//					}
//					else
//					{
//						s += "-x";
//						_ret.push_back(s);
//						continue;
//					}
//				}
//				else
//				{
//					if (_ret.empty())
//					{
//						if (val > 0)
//						{
//							s += "x^" + to_string(k);
//						}
//						else
//						{
//							s = "-";
//							s += "x^" + to_string(k);
//						}
//						_ret.push_back(s);
//						continue;
//					}
//					else
//					{
//						if (val > 0)
//						{
//							s = "+";
//							s += "x^" + to_string(k);
//						}
//
//						else
//						{
//							s = "-";
//							s += "x^" + to_string(k);
//						}
//						_ret.push_back(s);
//						continue;
//					}
//				}
//			}
//			else
//			{
//				s += to_string(val);
//				if (val > 0)
//				{
//					if (_ret.empty())
//					{
//						if (k == 0)
//						{
//							s = "+" + s;
//							_ret.push_back(s);
//							continue;
//						}
//						else if (k == 1)
//						{
//							s += "x";
//							_ret.push_back(s);
//							continue;
//						}
//						else
//						{
//							s += "x^" + to_string(k);
//							_ret.push_back(s);
//							continue;
//						}
//
//					}
//					else
//					{
//						if (k == 0)
//						{
//							s = "+" + s;
//							_ret.push_back(s);
//							continue;
//						}
//						else if (k == 1)
//						{
//							s = "+" + s + "x";
//							_ret.push_back(s);
//							continue;
//						}
//						else
//						{
//							s = "+" + s + "x^" + to_string(k);
//							_ret.push_back(s);
//							continue;
//						}
//					}
//				}
//				else
//				{
//					if (k)
//					{
//						if (k == 1)
//						{
//							s += "x";
//						}
//						else
//							s += "x^" + to_string(k);
//					}
//
//					_ret.push_back(s);
//					continue;
//				}
//			}
//
//		}
//		for (auto& str : _ret)
//			cout << str;
//	}
//
//	return 0;
//}

//int dx[4] = { 0,1,0,-1 };
//int dy[4] = { 1,0,-1,0 };
//
//int n;
//int pos = 0;
//int val = 1;
//int main()
//{
//	cin >> n;
//	int count = n * n - 1;
//	vector<vector<int>> ret(n + 1, vector<int>(n + 1));
//	int i = 1, j = 1;
//	ret[i][j] = val;
//	while (count)
//	{
//		if (i + dx[pos] >= 1 && i + dx[pos] <= n
//			&& j + dy[pos] >= 1 &&j + dy[pos] <= n && !ret[i+dx[pos]][j+dy[pos]])
//		{
//			ret[i + dx[pos]][j + dy[pos]] = ++val;
//			count--;
//			i = i + dx[pos]; j = j + dy[pos];
//		}
//		else
//		{
//			pos = (pos + 1) % 4;
//		}
//
//	}
//	for (int i = 1; i <= n; i++)
//	{
//		for (int j = 1; j <= n; j++)
//		{
//			printf("%3d", ret[i][j]);
//		}
//		cout << endl;
//	}
//	return 0;
//}


//int main()
//{
//	string a, b;
//	cin >> a >> b;
//	int _size1 = a.size();
//	int _size2 = b.size();
//	
//	if (_size1 > _size2)
//	{
//		while (_size2 != _size1)
//		{
//			b = '0' + b;
//			_size2++;
//		}
//	}
//	else if(_size2 > _size1)
//	{
//		while (_size2 != _size1)
//		{
//			a = '0' + a;
//			_size1++;
//		}
//	}
//
//	int target = 0;
//	string ret;
//	for (int i = _size1 - 1; i >= 0; i--)
//	{
//		int val1 = a[i] - '0';
//		int val2 = b[i] - '0';
//		int sum = val1 + val2 + target;
//		if (sum > 9)
//		{
//			target = sum / 10;
//			ret += to_string(sum % 10);
//			if (i == 0)
//			{
//				ret += '1';
//			}
//		}
//		else
//		{
//			ret += to_string(sum);
//			target = 0;
//		}
//	}
//
//	auto it = ret.rbegin();
//	while (it != ret.rend())
//	{
//		cout << *it;
//		it++;
//	}
//
//
//
//
//	return 0;
//}

//bool AIsLower(const std::string& a, const std::string& b)
//{
//	if (a.size() < b.size())
//	{
//		return true;
//	}
//	else if (a.size() == b.size())
//	{
//		for (int i = 0; i < a.size(); i++)
//		{
//			int val1 = a[i] - '0';
//			int val2 = b[i] - '0';
//			if (val1 < val2)
//				return true;
//		}
//		return false;
//	}
//	return false;
//
//}
//
//
//int main()
//{
//	int flag = 0;
//	string a, b;
//	cin >> a >> b;
//	if (a == b)
//		cout << '0';
//	else
//	{
//		if (AIsLower(a, b))
//		{
//			swap(a, b);
//			flag = 1;
//		}
//
//		string ret;
//
//		int size1 = a.size();
//		int size2 = b.size();
//		if (size1 > size2)
//		{
//			while (size2 != size1)
//			{
//				b = '0' + b;
//				size2++;
//			}
//		}
//
//		int target = 0;
//		for (int i = size1 - 1; i >= 0; i--)
//		{
//			int val1 = a[i] - '0' - target;
//			int val2 = b[i] - '0';
//			int sub = val1 - val2;
//			if (sub < 0)
//			{
//				ret += to_string(sub + 10);
//				target = 1;
//			}
//			else
//			{
//				ret += to_string(sub);
//				target = 0;
//			}
//		}
//
//		string _ret(ret.rbegin(), ret.rend());
//		int k = 0;
//		while (k < _ret.size())
//		{
//			if (_ret[k] == 0)
//			{
//				k++;
//			}
//			else
//			{
//				break;
//			}
//		}
//		if (flag)
//		{
//			cout << "-";
//		}
//
//		for (int j = k; j < _ret.size(); j++)
//		{
//			cout << _ret[j];
//		}
//	}
//
//
//
//	return 0;
//}


